package com.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 这是返回前端的结果类
 * 在业务代码中不可以直接将实体类、集合等直接返回前端，应将结果封装为结果类返回
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    /*
   200: 正常
   300: 数据库插入失败（返回值即受影响的行数 <1 ）
   301：数据库删除失败 （返回值即受影响的行数 <1 ）
   302：数据库更新失败 （返回值即受影响的行数 <1 ）
   303：数据库操作发生异常
   304：数据库查询结果为 空
   305：用户已存在
   306：（贴吧）类别（id）已存在
   307：用户不存在
   309： 帖子不存在或已被删除！
   322： 滚动帖顺序无变化
   310: 用户名或密码错误  （根据用户名和密码未查询到用户）
   408：文件写入失败
   409: 文件删除失败
   501: 获取session失败（设置参数为false）
   601： 用户已加入贴吧（单个）
   602： 用户未加入贴吧（单个）
   605： 用户未登录
   607： 用户加入贴吧个数为0（未加入任何贴吧）
   609： 当前用户无权限（权限不是 admin 管理员、没有权限查看对应的私密帖子）
   710： 私密帖 不可收藏
   714:  特殊（私密）贴吧不可退出
   800:  消息发送失败
   900:  未知错误
   * */
    private int result_code;

    private String msg;
    private Object data;
    private Long total;
    private boolean extra;//额外选项，有时前端需要一个布尔值作判断

    public static Result ok(){
        return new Result(200,  "操作成功", null,null,false);
    }
    public static Result ok(Object data){
        return new Result(200, "操作成功", data, null,false);
    }
    public static Result ok(Object data,boolean extra){
        return new Result(200, "操作成功", data, null, extra);
    }
    public static Result ok(List<?> data, Long total){
        return new Result(200, null, data, total,false);
    }
    public static Result fail(int result_code,String errorMsg){
        return new Result(result_code, errorMsg, null, null,false);
    }
}
